/*
 * @(#)InterfaceEdge.java
 *
 * Revision:
 * Author                                         Date           
 * --------------------------------------------   ------------   
 *  Jeremias D. Serafim de Araujo                     03/02/2012    
 */
package br.edu.ufcg.splab.core;
import java.util.UUID;

import br.edu.ufcg.splab.core.edges.EdgeType;



/**
 * Interface to represent a directed edge. 
 * 
 **/
public interface InterfaceEdge {
	
	/**
	 * Returns the label of edge
	 * 
	 * @return label is label of edge
	 */
	public String getLabel();
	
	/**
	 * Changes the label of edge 
	 * 
	 * @param label
	 */
	public void setLabel(String label);

	/**
	 * Return the vertex from of edge
	 * 
	 * @return vertex is a from vertex of edge
	 */
	public InterfaceVertex getFrom();
	
	/**
	 * Return the vertex to of edge
	 * 
	 * @return vertex is a to vertex of edge
	 */
	public InterfaceVertex getTo();
	
	/**
	 * Changes the vertex from of edge
	 * 
	 * @param from is a new vertex from of edge
	 */
	public void setFrom(InterfaceVertex from);
	
	/**
	 * Changes the vertex to of edge
	 * 
	 * @param to is a new vertex to of edge
	 */
	public void  setTo(InterfaceVertex to);
	
	/**
	 * Returns uuid, is used to identify the edge
	 * 
	 * @return uuid is a id of edge
	 */
	public UUID getUUID();
	
	/**
	 * Returns the type of edge (step, condition, expected_result)
	 * 
	 * @return type is a type of edge
	 */
	public EdgeType getType();
	
	/**
	 * Changes the type of edge
	 * 
	 * @param type is a new type of edge
	 */
	public void setType(EdgeType type);
}
